package com.ljkj.zjf.rest;

import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;

import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ljkj.access.Tuser;
import com.ljkj.common.application.SpringApplicationContext;
import com.ljkj.common.db.domain.ZjfGoodsType;
import com.ljkj.common.db.domain.ZjfGoodsTypeProprerty;
import com.ljkj.common.db.util.JSONUTIL;
import com.ljkj.common.db.util.UUID;
import com.ljkj.zjf.common.CacheManager;
import com.ljkj.zjf.common.GlobalNames;
import com.ljkj.zjf.service.TuserService;
import com.ljkj.zjf.service.ZjfGoodsTypePropertyService;
import com.ljkj.zjf.service.ZjfGoodsTypeService;

@Path("rest/goodsTypeProperty")
public class ZjfGoodsTypePropertySource {
	
	private static ZjfGoodsTypePropertyService zjfGoodsTypePropertyService;
	private static TuserService tuserService;
	private static ZjfGoodsTypeService zjfGoodsTypeService;
	//初始化service
	static {
		zjfGoodsTypePropertyService  = (ZjfGoodsTypePropertyService) SpringApplicationContext.getBean("zjfGoodsTypePropertyService");
		tuserService =  (TuserService) SpringApplicationContext.getBean("tuserService");
		zjfGoodsTypeService  = (ZjfGoodsTypeService) SpringApplicationContext.getBean("zjfGoodsTypeService");
	}
	
	private static Logger logger = LoggerFactory.getLogger(ZjfGoodsTypePropertySource.class);
	
	@Path("/list")
	@POST
	@Produces("application/json; charset=utf-8")
	public String goodsTypePropertyList(String json_para) throws Exception {
		
		String decode_str = URLDecoder.decode(json_para, "utf-8");
		decode_str = JSONUTIL.JsonFromString(decode_str);
		JSONObject json_object = JSON.parseObject(decode_str);
		String userId = json_object.getString("userId"); 
		
		Map<String, Object> errorMap = new HashMap<String, Object>();
		errorMap.put("errCode", GlobalNames.CALL_RESULT_FAIL);
		
//		if (userId == null || "".equals(userId)) {
//			errorMap.put("errMsg", "用户名不能为空");
//			return JSON.toJSONString(errorMap);
//		}
//		
//		String matchRes = CacheManager.getSession().getIfPresent(userId);
//		if (null == matchRes || "".equals(matchRes)) {
//			errorMap.put("errMsg", "您尚未登录，请登录再操作。");
//			return JSON.toJSONString(errorMap);
//		}
		
		String typeId = json_object.getString("typeId");
		String pageIndex = json_object.getString("pageIndex");
		int currentPage = 1;
		if(pageIndex != null && !"".equals(pageIndex)){
			currentPage = Integer.parseInt(pageIndex)+1;
		}
		String pageSize_str = json_object.getString("pageSize");
		int pageSize = 10;
		if(pageSize_str != null && !"".equals(pageSize_str)){
			pageSize = Integer.parseInt(pageSize_str);
		}
		String sortField = json_object.getString("sortField");
		String sortOrder = json_object.getString("sortOrder");
		
		String result = this.zjfGoodsTypePropertyService.getGoodsTypePropertysByProperties(typeId, currentPage, pageSize, sortField, sortOrder);
		return result;
		
	}
	
	
	@Path("/info")
	@POST
	@Produces("application/json; charset=utf-8")
	public String addOrEditGoodsTypePropertyInfo(String json_para) throws Exception {
		
		String decode_str = URLDecoder.decode(json_para, "utf-8");
		decode_str = JSONUTIL.JsonFromString(decode_str);
		JSONObject json_object = JSON.parseObject(decode_str);
		
		Map<String, Object> errorMap = new HashMap<String, Object>();
		errorMap.put("errCode", GlobalNames.CALL_RESULT_FAIL);
		String userId = json_object.getString("userId"); 
		if (userId == null || "".equals(userId)) {
			errorMap.put("errMsg", "用户名不能为空");
			return JSON.toJSONString(errorMap);
		}
		
		String typeId = json_object.getString("typeId");
		String propertyId = json_object.getString("propertyId");
		ZjfGoodsType zjfGoodsType = null;
		ZjfGoodsTypeProprerty zjfGoodsTypeProprerty = null;
		
		String typeIdParent = null;
		if(typeId == null || "".equals(typeId)){
			typeIdParent = json_object.getString("typeIdParent");
			if(typeIdParent == null || "".equals(typeIdParent)){
				errorMap.put("errMsg", "没有选中类型");
				return JSON.toJSONString(errorMap);
			}else{
				typeId = typeIdParent;
			}
		}
		
		if(typeId != null && !"".equals(typeId)){
			zjfGoodsType = this.zjfGoodsTypeService.geZjfGoodsTypeById(typeId);
		}
		if(zjfGoodsType == null){
			errorMap.put("errMsg", "没有选中类型");
			return JSON.toJSONString(errorMap);
		}
		
		
		if(propertyId != null && !"".equals(propertyId)){
			zjfGoodsTypeProprerty = this.zjfGoodsTypePropertyService.geZjfGoodsTypePropertyById(propertyId);
		}
		
		if(zjfGoodsTypeProprerty == null){
			zjfGoodsTypeProprerty = new ZjfGoodsTypeProprerty();
		}
		zjfGoodsTypeProprerty.setTypeId(typeId);
		String propertyName = json_object.getString("propertyName");
		if(propertyName!= null){
			zjfGoodsTypeProprerty.setPropertyName(propertyName);
		}
		
		String propertyValue = json_object.getString("propertyValue");
		if(propertyValue!= null){
			zjfGoodsTypeProprerty.setPropertyValue(propertyValue);
		}
		
		String propertySequence = json_object.getString("propertySequence");
		if(propertySequence!= null && !"".equals(propertySequence)){
			zjfGoodsTypeProprerty.setPropertySequence(Integer.valueOf(propertySequence));
		}
		
		
		Integer disabledState = null;
		String disabledState_temp = json_object.getString("disabledState");
		if(disabledState_temp != null && !"".equals(disabledState_temp)){
			disabledState = Integer.parseInt(disabledState_temp);
			zjfGoodsTypeProprerty.setDisabledState(disabledState);
		}
		
		Tuser tuser = this.tuserService.getUserById(Integer.valueOf(userId));
		
		String result = this.zjfGoodsTypePropertyService.addOrEdizjfGoodsTypePropertyInfo(zjfGoodsTypeProprerty, tuser);
		return result;
		
	}


}
